package revisao3;

import java.util.ArrayList;
import java.util.List;

import revisao1.Produto;

public class RepositorioProdutosArrayList <T extends Produto> implements RepositorioProdutos {

	// um array para armazenar os produtos;
	private List <T> items;
	

	public RepositorioProdutosArrayList(){
		items = new ArrayList<T>();
	}
	
	@Override
	public boolean existe(int codigo) {
		
		for (T item : items)
			if (item.getCodigo()== codigo)
				return true;
		
		return false;
	}

	@Override
	public void inserir(Object item) {
		items.add((T)item);
	}

	@Override
	public void atualizar(Object item) throws Exception {
		
		for (int i=0; i< items.size(); i++){
			if (items.get(i).getCodigo() == ((T)item).getCodigo()){
				items.set(i, ((T)item));
				return;
			}		
		}
		//lancar excecao...
		throw new Exception("Item nao esta Adicionado no ArrayList!");
	}

	@Override
	public void remover(int codigo) throws Exception {
		int index = procurarIndice(codigo);
		
		if (index!=-1){
			items.remove(index);
		}
	}

	@Override
	public T procurar(int codigo) throws Exception {
		
		if (existe(codigo)){
			int index = procurarIndice(codigo);
			return items.get(index);
		}
		else{
			throw new Exception("Esse item nao existe!");
		}
	}

	@Override
	public int procurarIndice(int codigo) {
		
		for (int i=0; i<items.size(); i++){
			if ( items.get(i).getCodigo() == codigo ){
				return i;
			}
		}
		
		return -1;
	}

}
